Method and apparatus for grouping multiple SAS expanders to form a single cohesive SAS expander

ABSTRACT

A SAS (Serial Attached SCSI or Serial Attached Small Computer System Interface) switch includes a master SAS expander and a multitude of slave expanders connected to the master SAS expander. Each slave expander has a distinct SAS address. The slave expanders are not directly connected to one another and communicate through the master expander. The SAS switch has a pair of SAS wide ports each having a multitude of SAS links each associated with one of the slave expanders. The slave expanders are configured to route SAS traffic in accordance with routing tables established by the master SAS expander. The master SAS expander is not directly connected to either of the SAS wide ports.

CROSS-REFERENCES TO RELATED APPLICATION

This application claims priority to Chinese patent application No.201510014436.0, entitled “METHOD AND APPARATUS FOR GROUPING MULTIPLE SASEXPANDERS TO FORM A SINGLE COHESIVE SAS EXPANDER,” filed Dec. 30, 2014,which is hereby incorporated by reference.

BACKGROUND OF THE INVENTION

The present application relates to data communication in computerstorage technologies, and more particularly to improving wide port datacommunications.

Serial Attached Small Computer System Interface (SCSI), commonlyreferred to as SAS, is a point-to-point serial protocol that definesdata movement to and from computer storage devices, and a protocol stackfor storage entities interconnections. A SAS domain, forming an the SAStopology, is typically formed by a multitude of SAS storage networkelements which may include initiator SAS devices, such as a host busadapter (HBA), a SAS expander, such as a SAS switch, and SAS enddevices, such as hard disk drives in a JBOD (just a bunch of disks). Asis known in the art, JBOD (abbreviated for “just a bunch of disks”)provides neither redundancy nor performance improvements. Hard drivesmay be handled independently as separate logical volumes, or they may becombined into a single logical volume using a volume manager. Each SASdevice is identified with a universally unique SAS address. A SAS portcan be a narrow port or a wide port. A narrow port has only one physicallink (PHY), and a wide port has multiple PHYs.

A SAS expander facilitates communication between various SAS storagenetwork elements by providing the necessary switching and routingfunctions. A SAS expanders may also facilitate the connection betweenmultiple SAS end devices and a single initiator port. A SAS expanderoften provides a number of SAS ports to enable communications betweenSAS devices.

FIG. 1 is a simplified block diagram of a computer storage system 100using a simple SAS topology. System 100 is shown as including a singleexpander SAS switch 103 (which is a self-configuring expander, alsoshown as scfg), one HBA (host bus adapter) 101, one JBOD 105 includingan expander 106 (which is also a scfg) and two disks 108 and 109, eachwith a different SAS address A/B/C/D/E. SAS links 00-09 are used toconnect all SAS elements as illustrated. Wide port 131 connects HBA 101to SAS switch 103 and includes SAS links 00, 01, 02, and 03. Wide port132 connects SAS switch 103 to JBOD 105 and includes SAS links 04, 05,06, and 07. FIG. 1 also shows two narrow port connections, i.e., diskconnections SAS links 08 and 09.

On power up or link reset, SAS links 00-03 are brought up, expander 103sends IDENTIFY address frame to HBA with the SAS address B on each ofthe link 00-03, HBA receives the IDENTIFY address frames on link 00-03and finds that they contains the same SAS address of B. HBA considersitself as being directly connected to the expander 103 through the wideport defined by links 00-03. In the similar way, expander 103 considersitself as being directly connected to the HBA through the wide port thatincludes SAS link 00-03.

The HBA starts topology discovery towards expander B, it first sends anopen request with destination SAS address of B on any one of SAS links00-03 (for example, 00 is chosen), and expander B receives the openrequest and responds with an open accept. In thus way the connectionbetween HBA and expander B is established, and SAS link 00 is dedicatedfor the communication between HBA and expander B. HBA sends managementcommands to expander B to perform discovery on the SAS devices directlyattached to expander B. Expander B responds with the PHY status andreports that expander C is connected through the PHYs of SAS link 04-07.The HBA then tries to perform discovery on expander C. The HBA sends anopen request with a destination SAS address C on any of the SAS link00-03 (e.g., 00), expander B receives the open request and looks up thedestination SAS address in the direct route table, and then propagatesthe open request to any of the SAS links 04-07 (e.g., 04). Expander Creceives the open request and determines that the destination SASaddress is itself. Expander C then responds with an “open accept”through SAS link 04 where the open request is received. Expander Bpropagates the “open accept” back to the HBA on SAS link 00, and thusthe SAS connection is established from HBA to Expander C using SAS links00/04. Then HBA sends SAS management commands to expander C to discoverthe PHY status on expander C, and determines that two disks areconnected to expander C. In this way, HBA completes the discoveryprocess and have all the knowledge of the SAS devices in the SAStopology. HBA will use the SAS addresses discovered in the discoveryprocess and IDENTIFY address frames when it tries to talk to the SASdevice in the topology.

Expander B can also initiate the discovery process. It can send an openrequest with the destination SAS address C on any of the SAS links 04-07(e.g., 04). Expander C receives the open request and responds with an“open accept,” so the connection between expanders B and C isestablished on SAS link 04. Expander B sends management commands toexpander C and discovers the PHYs on expander C. Expander C responds andreports that disk D and disk E are attached. Expander B configures diskD and disk E SAS address in its route table, and completes thediscovery. SAS expander C performs a similar discovery process asexpander B, and configure the HBA's SAS address A in its own routetable.

The expander's discovery process will only configure SAS addresses inthe route table for the SAS devices that are not directly attached. Thedirectly attached SAS addresses will be configured in the direct routetable, when receiving the IDENTIFY address frame from the peer SASdevice (the identification sequence). For example, expander B configuresdirect route table for SAS address A and SAS address C when SAS links01-03/04-07 are up and IDENTIFY frames are received in theidentification sequence. Expander B configures route entries for SASaddress D and SAS address E in the discovery process. Expander Cconfigures the route table for directly attached devices andnon-directly attached devices in a similar way.

When all the identification sequence and discovery sequence onHBA/expander B/C are completed, the route table in the expander B/C areproperly configured and the HBA has the knowledge of all the expander B,C and disk D, E. HBA will use the SAS address discovered to establishthe connection when trying to talk to a disk/expander.

When the HBA tries to access disk D, it sends an open request withdestination SAS address of D to any of the SAS link 00-03, (say, 00 ischosen). Expander B takes the SAS address received in the open request(SAS address D) and propagates it to any of the SAS link 04-07 (say, 04is chosen). Expander C receives the open request and looks up the routetable for SAS address D and propagates the open request to SAS link 08.The disk with SAS address D receives the open request and responds withopen accept to SAS link 08. The open accept is propagated back to theHBA on SAS links 08→04→00, and thus the connection between the HBA anddisk D is established. The HBA communicates with disk D through SASlinks 00-04-08. Before the connection is closed, no other connection isallowed to be established over SAS links 00-04-08. That is, HBAconsiders SAS link 00 as busy, and if it wants to talk to disk E, itwill send an open requests on, e.g., SAS link 01. After HBA is finishedwith disk D, it sends a close primitive on SAS link 00, and the closeprimitive is propagated through expanders B and C on SAS link 00→04→08.Disk D will respond with a close primitive, which is propagated back toHBA using the same path. After the handshaking process described above,the connection is successfully closed.

A SAS switch is one or multiple SAS expanders that facilitates SAS datatransfer between multiple host HBAs/controllers and storage devices suchas JBODs. A SAS switch provides 10 disaggregation enabling a rackstorage pool to be segmented and dynamically allocated among servers. Incertain applications, a large number of host HBAs and JBODs may beconnected to a single SAS switch.

As stated above, the port count of a single physical SAS expander devicelimits the number of the SAS devices that can be connected to the SASexpander. Certain SAS expander applications, such as a top-of-rack SASswitch used to connect hosts and JBODs within rack, require a high portcount and cannot be built on a single physical expander device. In orderto implement a high port count in an expander device, a plurality ofphysical expander devices is grouped together and appears externally asa single cohesive SAS expander. However, existing method of grouping aplurality of expander devices into a single, cohesive SAS expander oftenincludes using a number of homogenous self-managed expander deviceswhich are synchronized over direct SAS connections. The synchronizationconnection may use direct SAS links among the SAS expander devices. Thedistributed SAS implementation in multiple SAS expander devices within aSAS switch brings challenges in SAS expander management, fail-overhandling, enclosure management, etc. In the existing method the expanderdevices are also required to be assigned with identical SAS addresses sothat wide port can be formed from PHYs from each of these expanders.This requires sophisticate design because the SAS standard does notallow an identical SAS address to be shared among multiple SAS deviceswithin the same SAS domain.

BRIEF SUMMARY OF THE INVENTION

Embodiments of the present invention provide methods and apparatus forgrouping multiple SAS expander devices, including at least one masterSAS expander and a multitude of slave SAS expanders, to form a singlecohesive SAS expander. Each of the SAS expanders has a different SASaddress. The slave SAS expanders are connected to and configured by themaster SAS expander such that there is no direct SAS connection betweenany two of the slave SAS expanders. Physical links (PHYs) from multipleslave SAS expanders are grouped into SAS ports for external SAS deviceconnections. The grouped SAS expanders operate and respond as a singlecoherent SAS expander with a unified SAS address and provide high portcount SAS ports for connecting to external SAS devices. The grouping ofmultiple SAS expanders provides a solution for high port count SASswitch products. Embodiments of the present invention can overcome thedrawbacks in existing approaches as described above, and are simpler,more scalable and more SAS standard-compliant.

According to some embodiments of the present invention, a SAS (SerialAttached SCSI or Serial Attached Small Computer System Interface) switchincludes a master SAS expander and a multitude of slave expandersconnected to the master SAS expander. Each slave expander has a distinctSAS address and is not directly connected to other slave expanders. Afirst SAS wide port has a first multitude of SAS links, each associatedwith a different one of the multitude of slave expanders. A second SASwide port has a second multitude of SAS links, each associated with adifferent one of the multitude of slave expanders. The slave expandersare configured to route SAS traffic in accordance with routing tablesestablished by the master SAS expander. Further, the master SAS expanderis not directly connected to either the first or the second SAS wideports.

In one embodiment, the master and slave SAS expanders are configured tooperate as a single coherent SAS expander with a unified SAS address.The first and second wide ports are used for connecting the external SASdevices. In another embodiment, the master expander is configured todetect a failure with a SAS link and reroute a SAS traffic bound forthat SAS link. In another embodiment, the routing table for each slaveSAS expander is configured by the master SAS expander such that, duringa SAS link identification sequence, the slave SAS expanders sendsIDENTIFY address frames which include the master SAS expander's SASaddress and a multitude of PHY identifiers globally indexed within theSAS switch. In other words, each SAS link in each of the first SAS wideport and second SAS wide port is configured to have a distinctnon-overlapping external PHY identifier.

In another embodiment, each slave SAS expander communicates with themaster SAS expander using the slave expander's SAS address and a localPHY identifier. In another embodiment, the master SAS expander isconfigured to perform SAS expander management functions, which includesterminating and servicing the SSP (Serial SCSI Protocol) and SMP (SerialManagement Protocol) commands from external SAS devices as a SASmanagement target, and sending SSP and SMP commands to slave SASexpanders and external SAS devices as a SAS management initiator. Inanother embodiment, SAS switch also includes a third and a fourth wideports, each PHY in the wide port is associated with a different one ofthe slave expanders. The third SAS wide port is configured forconnecting to a third external SAS device, and the fourth SAS wide portis configured for connecting to a fourth external SAS device. In anotherembodiment, each slave SAS expander is configured to route SAS trafficamong external SAS devices and route SAS management traffic to and fromthe master SAS expander.

According to some embodiments of the invention, a method for forming asingle coherent SAS (Serial Attached SCSI or Serial Attached SmallComputer System Interface) expander includes assigning a SAS expander asa master SAS expander, and assigning a multitude of SAS expanders asslave SAS expanders, each of the multitude of SAS expanders has adistinct SAS address. The method also includes connecting each of theslave SAS expanders to the master SAS expander through at least oneinternal SAS link and inhibiting direct connection between any two ofthe slave SAS expanders. The method includes forming a first SAS wideport having a first plurality of SAS links each associated with adifferent one of the plurality of slave expanders, and forming a secondSAS wide port having a second plurality of SAS links each associatedwith a different one of the plurality of slave expanders. The methodalso includes configuring the multitude of slave expanders to route SAStraffic in accordance with routing tables established by the master SASexpander.

In an embodiment, the slave SAS expanders are configured by the masterSAS expander for SAS routing, and the slave SAS expanders arenon-self-configuring. In an embodiment, the method includes configuringthe slave SAS expanders such that the IDENTIFY address frames sent toexternal SAS devices by the slave expanders include a SAS ADDRESS fieldset to the master SAS expander's SAS address and a PHY IDENTIFIER fieldset to a PHY identifier that is uniquely indexed within the singlecoherent SAS expander. In an embodiment, the method further includesforming no direct connection between the master expander and the wideport. In an embodiment, the method further includes configuring theslave SAS expanders such that SAS traffic between two external SASdevices is routed via external SAS wide ports. In an embodiment, themaster SAS expander is configured to detect a failure with a first oneof a multitude of SAS links and reroute a SAS traffic bound for thefirst one of the multitude of SAS links.

According to some embodiments of the present invention, a method isprovided for managing an IDENTIFY address frame in a first SAS (SerialAttached Small Computer System Interface) device, which is characterizedby a first set of values for the fields in the IDENTIFY address frame.The method includes receiving a second set of values for the fields inthe IDENTIFY address frame, which are different from the first set ofvalues. The method also includes, in a SAS link identification sequence,presenting an IDENTIFY address frame having the second set of values toanother SAS device. In an embodiment, the method includes receiving thesecond set of values for the fields in the IDENTIFY address from a firstSAS link of the first SAS device, and presenting the second set ofvalues for the fields in the IDENTIFY address to a second SAS link ofthe first SAS device. In another embodiment, the method includes, in aSAS switch having a master expander and a multitude of slave expander,configuring the routing table for the slave SAS expanders such that, ina SAS link identification process, the slave SAS devices are configuredto send IDENTIFY address frames which include the master SAS expander'sSAS address and a distinct external PHY identifier.

According to some embodiments, in a single cohesive SAS (Serial AttachedSmall Computer System Interface) expander including a master SASexpander and a multitude of slave SAS expanders, a method is providedfor the master expander to create a fail-over SAS path. The methodincludes receiving a PHY status change event from a slave SAS expanderwith a failed SAS link, and performing a discovery process on the slaveSAS expander and to identify the failed SAS link. The method alsoincludes performing discovery processes on other slave SAS expanders tofind a replacement slave SAS expander that is capable of routing the SAStraffic affected by the failed SAS link. The method includes configuringroute entries on the slave SAS expander with the failed SAS link toroute affected SAS traffic to the master SAS expander, and configuringroute entries on the replacement slave expander to route the affectedSAS traffic from the master expander to a SAS link of the replacementexpander to replace the failed SAS link.

In an embodiment, the slave SAS expander with the failed SAS linkreports the PHY status change event to the master SAS expander via aBROADCAST (Change) primitive. In another embodiment, the failed SAS linkis an external SAS link connected to an external SAS device.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a simplified block diagram of a computer storage system incommunication using a simple SAS topology;

FIG. 2 is a simplified block diagram of a host system coupled to atarget device using a SAS switch according to an embodiment of thepresent invention;

FIG. 3 is a simplified block diagram illustrating a method for creatinga fail-over SAS path in a single cohesive SAS expander according to anembodiment of the present invention;

FIG. 4 is a simplified block diagram illustrating a system including asingle cohesive SAS expander according to another embodiment of thepresent invention;

FIG. 5 is a simplified block diagram illustrating a system including asingle cohesive SAS expander according to an alternative embodiment ofthe present invention;

FIG. 6 is a simplified block diagram illustrating a system including asingle cohesive SAS expander according to yet another embodiment of thepresent invention;

FIG. 7 is a flow chart illustrating a method for forming a singlecohesive SAS expander from multiple expanders according to an embodimentof the present invention; and

FIG. 8 is a flow chart illustrating a method for creating a SASfail-over SAS handling in a single cohesive SAS expander according to anembodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Embodiments of the present invention provide methods and apparatus forgrouping multiple SAS expanders to form a high port count singlecohesive SAS expander or a SAS switch configured to provide, among otheroperations, non-block SAS switching functionality.

A high port count SAS switch, in accordance with embodiments of thepresent invention, provides a number of advantages, as described furtherbelow. With regard to HBA/JBOD connectivity, the wide port SAS switchcan provide flexible connectivity, such that the HBA/JBOD (i) ratio isflexible and (ii) may be connected to any port on the SAS switch. Insome embodiments, connections to the HBA/JBOD are wide port connections(e.g., x4 or x8, etc.), and no direct connections are made to HDD. TheSAS switch can provide non-block SAS switching fabric so that no trafficbottleneck is present within the SAS switch, i.e., no internal cascadingoccurs for normal data path (all paths in parallel). Currently themaximum PHY count is 255 (including vphy), which is limited by the 8 bitPHY IDENTIFIER field. The high port count SAS switch, in accordance withembodiments of the present invention, provides a multi-expander solutionthat overcomes the current maximum PHY count in a single expander of 255(including vphy), which is limited by the 8 bit PHY IDENTIFIER field.Further, the SAS switch is a single cohesive expander such that the SASswitch is externally viewed as a single logical expander. Themulti-expander logical expander can provide external operation andperformance similar to that of a single physical expander. On the otherhand, the internal multi-expander topology and management mechanism istransparent to external SAS devices.

In some embodiments of the present invention, a SAS switch includes amaster SAS expander device and a multitude of slave SAS expander deviceseach assigned a different SAS addresses. The slave expander devices aremanaged by the master expander device and are configured to route theSAS traffic among external SAS devices and forward the SAS managementtraffic to and from the master expander device. Embodiments of thepresent invention thus are simpler and more scalable, and can overcomethe drawbacks associated with conventional solutions, such as complexsynchronization and fail-over handling. Further, the SAS switchaccording to embodiments of the invention includes multiple expanders,each of which has a distinct SAS address, and is more SASstandard-compliant than conventional solutions. However, in accordancewith embodiments of the invention, the SAS switch appears to externaldevices with a single unified SAS address and a high port count.

In accordance with one embodiment of the present invention, for amultitude of physical SAS expanders are grouped to form a singlecohesive SAS expander. A SAS switch, in accordance with embodiments ofthe present invention, may include at least two slave SAS expanderdevices (hereinafter alternatively referred to as slave or SAS slave)and a master SAS expander device (hereinafter alternatively referred toas master or SAS master). Each slave is connected to a master via atleast one SAS link. The master and slaves have different SAS addresses.A common SAS wide port for the SAS switch may be formed by grouping atleast one PHY of one of the slaves with at least one PHY of anotherslave. Even though each slave SAS expander has a distinct SAS address,the SAS switch appears to the external devices with a single unified SASaddress and a high port count. In some embodiments, this is achieved bythe master expander configuring each slave to send IDENTIFY addressframes with the SAS address assigned to the master expander device and aglobally numbered PHY index on the PHY of the slave expander device inthe common SAS wide port.

The master is responsible for SAS expander management operations such asterminating and servicing the SSP (Serial SCSI Protocol) and SMP (SerialManagement Protocol (SMP) commands from external SAS devices as a SASmanagement target, sending SSP and SMP commands to slaves and externalSAS devices as a SAS management initiator, and the like. The slaves areresponsible for routing SAS traffic among external SAS devices androuting SAS management traffic to and from the master. Because SASexpander management operations are performed by the master, the need forsynchronization between slaves is eliminated. The external SAS wide portcombined with PHYs from different slave SAS expanders providesnon-blocking SAS switching functionality for SAS traffic among externalSAS devices. In some embodiments, the PHYs in any of the SAS port can beused in establishing a connection path between any two of the externalSAS devices in the SAS domain in which a set of SAS devices communicatewith one another, or between one of the external SAS devices and themaster.

FIG. 2 is a simplified block diagram of a computer system 200 shown asincluding in part, an initiator (host) 1005 coupled to a target device1008 via expander 1007 and a multitude of SAS (Serial Attached SmallComputer System Interface) expanders 1000, 1001, 1002, 1003, and 1004collectively forming a single cohesive SAS expander 1030, in accordancewith one embodiment of the present invention. As shown in FIG. 2, singlecoherent SAS expander (also referred to herein as SAS switch) 1030includes a master SAS expander 1004 and a multitude of slave expanders1000, 1001, 1002, and 1003. The slave expanders are not directly coupledto one another and each has an SAS address different from the SASaddresses of the master and other slave expanders. The SAS switch 1030is shown as having a first SAS wide port 1031 for communicating withinitiator 1005, and a second SAS wide port 1032 for communicating withtarget 1008 via expander 1007. For example, initiator 1005 can be acomputer, and target 1008 can be a hard disk. First SAS wide port 1031has a multitude of SAS links, namely SAS links 1010, 1011, 1012, and1013, respectively coupling slave expanders 1000, 1001, 1002, 1003 toinitiator 1005. Second SAS wide port 1032 has a multitude of SAS links,namely SAS links 1014, 1015, 1016, and 1017, respectively coupling slaveexpanders 1000, 1001, 1002, and 1003 to target 1008 via expander 1007.The master SAS expander is not directly connected to either the first orthe second SAS wide ports.

As shown in FIG. 2, slave expanders, 1000, 1001, 1002, and 1003communicate with master expander 1004 through SAS connections 1020,1021, 1022, and 1023, respectively. The SAS connections, 1020, 1021,1022, and 1023, each includes at least one SAS link. Master expander1004 is not directly connected with external devices to which SAS switch1030 is connected.

Master SAS expander 1004 is responsible for managing the overallactivities of SAS switch 1030, including, in part, (i) performing thetopology discovery process, (ii) configuring the routing entries for theslave SAS expanders, (iii) responding to SAS management and enclosuremanagement commands from external SAS devices (e.g., initiator 1005),and (iv) handling error conditions such as link fail-over. Upondetecting a failure on an SAS link, master expander 1004 provides analternative SAS route, thereby managing link fail-over.

Slave SAS expanders 1000, 1001, 1002, and 1003 are configured to routeSAS traffic among the external SAS devices in accordance with therouting tables established by the master expander and stored in theslave expanders during the topology discovery process. From theviewpoint of the external devices, SAS switch 1030 appears as a singleSAS expander. Internal to SAS switch 1030, however, the slave expandersare individually SAS addressable by the master expander. The slaveexpanders do not perform topology discovery process and do not configureroute entries in their own routing table. The route tables and entriesin the slave SAS expanders are configured by the master SAS expander, asdescribed above.

According to SAS specification, in the SAS identification sequences peerSAS devices directly connected by a SAS link identify each other byexchanging IDENTIFY address frames that includes, in part, SAS devicecapability, SAS address, PHY identifier, and the like.

SAS switch 1030 is identified with a unique SAS address and globallyindexed PHY identifiers globally indexed within the SAS switch. Forexample, referring to FIG. 2, SAS master's SAS address SAS_ADDR_1004 andthe globally indexed PHY identifies are defined in the IDENTIFY addressframes on external links 1010-1017. For example, SAS slave 1000 may havePHY identifiers ranging from 0 to 29; SAS slave 1001 may have PHYidentifiers ranging from 30 to 59; SAS slave SAS 1002 may have PHYidentifiers ranging from 60 to 89; and SAS slave 1003 may have PHYidentifiers ranging from 90 to 119. With this configuration, SAS switch1030 appears to external SAS devices, such as devices 1005, 1007, and1008, as a single cohesive expander device having as its SAS address theSAS master address SAS_ADDR_1004, and a multitude of globally indexedPHYs ranging from 0 to 119, for this example. External SAS devices cansend SAS management traffic to the slave SAS expanders. SAS managementtraffic may include, for example, SMP and SSP commands for SAS topologydiscovery, SAS management, and enclosure management services. The SASmanagement traffic is routed by slave SAS expanders 1000-1003 to masterSAS expander 1004 and centrally handled by master SAS expander 1004.Master SAS expander 1004 together with the slave SAS expanders respondto the external SAS devices in unison so as to appear as a singlecohesive SAS expander to all external devices.

Internal to SAS switch 1030, SAS master 1004 and SAS slaves areidentified with different SAS addresses and a locally indexed PHYidentifiers to accommodate internal traffic management exchanged overthe internal SAS links. The SAS slave 1000-1003 send IDENTIFY addressframes on the internally connected SAS links using their local SASaddresses and locally indexed PHY identifiers.

In other words, for communication with external SAS devices on theexternal connected SAS links 1010-1017, SAS slaves 1000-1003 sendIDENTIFY address frames that have the SAS master SAS address,SAS_ADDR_1004, and their globally indexed PHY identifiers. For internalcommunication, each SAS slave (e.g., slave 1000) sends IDENTIFY addressframes on an SAS link (e.g., SAS link 1020) to communicate with SASmaster 1004; such address frames have the slave's own local SAS address(e.g., SAS_ADDR_1000), and a locally indexed PHY identifier. SAS master1004 sends IDENTIFY address frames on any of the links 1020-1023; eachsuch frame has SAS master's own local SAS address, namely SAS_ADDR_1004and SAS master's PHY identifiers.

As described above, the SAS master 1004 has an SAS address that isdifferent from the SAS addresses of any of the SAS slaves. The SASmaster is further configured to implement a virtualization layer toprovide cohesive SAS expander SMP and SSP interfaces to external SASdevices. As described above, SAS master 1004 is further configured tomanage the internal slave SAS expanders. There's no direct SAS linksbetween the SAS master 1004 and any of the external SAS devices. SASlink fail over is also managed by the SAS master by configuring thespecific slave SAS expander route entries for an alternative SAS routeto the failed SAS link.

SAS slaves 1000, 1001, 1002, and 1003 are responsible for, among otherthings, (i) routing management traffic between the SAS master SAS andany of the SAS devices external to SAS switch 1030, and (ii) routing SAStraffic among the external SAS devices, and reporting local PHY eventsto the SAS master. The SAS slaves have different SAS addresses andremain individually SAS addressable by the SAS master, yet the SASslaves' IDENTIFY frames are provided such that SAS switch 1030 is viewedexternally as a single cohesive expander 1030. In the embodiment shownin FIG. 2, there is no direct SAS links between any of the SAS slaves.Furthermore, in the embodiment shown in FIG. 2, SAS slaves do notperform topology discovery process and do not configure route entries intheir own route tables. The route entries in the slave SAS expanders areconfigured by the master SAS expander.

According to the SAS specification, IDENTIFY address frames are used forthe SAS identification sequences. Peer SAS devices directly connected bya SAS link identify each other by exchanging IDENTIFY address framescontaining their SAS information, including SAS device capability, SASaddress, and PHY identifier, and the like.

When SAS switch 1030 is powered up, SAS master 1004, and SAS slaves1000-1003 are powered up concurrently and internal SAS links inconnections, 1020-1023, become active. SAS master 1004 and SAS slaves1000-1003 exchange IDENTIFY address frames which contain their local SASaddresses and local PHY identifiers over the links disposed in theinternal SAS connections. SAS master discovers the SAS slaves directlyconnected to the SAS master. As described above, SAS slaves do notperform topology discovery process. Each SAS slave receives an IDENTIFYaddress frame from the SAS master on the SAS link directly connectingthe SAS slave and master. The SAS master configures the routing table ineach of the SAS slaves thus enabling SAS traffic to be routed by theslaves to the master. The routing table is configured by the masterduring the discovery processes. The SAS master is further configured toroute entries for any virtual SSP target on the slaves.

In the embodiment shown in FIG. 2, each wide SAS port is shown as havingfour SAS links, each of which comes from a different SAS slave.Accordingly, SAS links 1010-1013 are grouped together into wide SAS port1031, and SAS links 1014-1017 are grouped together into wide SAS port1032. As described above, SAS slaves 1000-1003 manage the IDENTIFYaddress frames sent to the external SAS links by setting the SAS addressfield of the frame with the SAS address of master SAS expander 1004,SAS_ADDR_1004, and setting the PHY IDENTIFIER field with a globallyindexed PHY ID. External SAS devices, e.g., SAS initiator device 1005and SAS expander device 1007, regard themselves as directly connectedthrough the SAS wide port connections, i.e. wide port 1031 (formed usingSAS links 1010-1013) or wide port 1032 (formed using SAS links1014-1017) to a single cohesive SAS expander device 1030, whose SASaddress is the SAS master's SAS address, SAS_ADDR_1004.

When the status of a SAS link on SAS switch 1030 changes, e.g., fromready to not ready or vice versa, SAS master 1004 performs a SAStopology discovery process of the changed port status and configuresroute entries on the slave SAS expander to which the changed port isconnected. The external SAS devices also performs SAS topology discoveryto discover SAS switch 1030.

As an example of direct SAS connection handling, when the status of SASlink 1014 on SAS slave 1000 connected to external SAS expander 1007becomes ready, SAS slave 1000 detects the PHY status change and reportsthe PHY change event to SAS master 1004 by sending a BROADCAST (Change)primitive through SAS link 1020. Master expander 1004 receives theBROADCAST (Change) primitive and performs topology discovery process onSAS connection 1020 where the BROADCAST (Change) was received. Duringthe topology discovery process, the master expander sends SMP commands,such as SMP REPORT GENERAL, SMP DISCOVERY command, to slave expander1000, and finds that one of PHYs on slave expander 1000 becomes readyand an external SAS expander device 1007 is connected through the SASlink 1014. SAS master 1004 configures a local route entry for expander1007, then sends SMP commands, such as SMP REPORT GENERAL, SMP DISCOVERYcommand, to expander 1007 and finds that the expander 1007 is connectedto a SAS target device 1008 through SAS link 1018. SAS master 1004 sendsan SMP CONFIGURE ROUTE INFORMATION command to SAS slave 1000 toconfigure a route entry for SAS target device 1008 in SAS slave 1000'sroute table. As there is no more expander device to discover, thetopology discovery process originated by SAS master 1004 is completed.There is one SAS link on each of the four SAS slaves connected to theexpander 1007. The four SAS links 1014, 1015, 1016, and 1017 areexpected to become ready concurrently. SAS master 1004 then performs theSAS topology discovery process for the other three SAS links, 1015,1016, and 1017, when they become ready one by one. As the externaltopology connected to the SAS links 1014-1017 is the same, the masterexpander can choose to perform full SAS topology discovery process justas the one for SAS link 1014, or it can just copy the route entries forSAS link 1014 in SAS slave 1000 to the other three SAS slave 1001, 1002,and 1003. The master expander sets the self-configuring bit to 1 whileperforming the discovery processes for the PHY status change events fromthe four SAS slaves to indicate that the single cohesive expander 1030is in configuring status, and set the self-configuring bit to 0 when allof the four topology discovery processes are completed to indicate thesingle cohesive expander 1030 is not in configuring status. The SASmaster can send proprietary commands through SAS link or out-of-bandlink to the SAS slave to send the BROADCAST (Change) primitives to allthe SAS slave external SAS ports except for the SAS port where the SASlink just becomes ready. The master expander can also implement atimeout value to wait for all of the four PHY status events beingreported and discovery processes being completed. When it times out andnot all of the four PHY status events have been reported and thediscoveries to the four slave expanders are not completed in time, adecision is made that not all of the four SAS links in the wide portconnected the expander 1007 become ready. At this time, a link fail-overhandling is performed, as described further below.

An example of direct SAS connection tear down handling is describedbelow. When the status of a SAS link, e.g., SAS link 1014, on slaveexpander 1000, connected to the external SAS expander 1007, becomes notready, SAS slave 1000 detects the PHY status change and reports the PHYchange event to SAS master 1004 with a BROADCAST (Change) primitivethrough one of the SAS links in the SAS connection 1020. SAS masterreceives the BROADCAST (Change) primitive and performs a topologydiscovery process on the SAS connection 1020 where the BROADCAST(Change) was received. During the topology discovery process, SAS mastersends SMP commands, such as the SMP REPORT GENERAL, SMP DISCOVERYcommand, to slave expander 1000 and finds that one of PHYs on the slaveexpander 1000 has become not ready, and the external SAS expander device1007 is no longer connected through the SAS link 1014. SAS master 1004sends SMP CONFIGURE ROUTE INFORMATION command to SAS slave 1000 toremove all the route entries on slave expander 1000 related to the SASlink 1014. Thus, the topology discovery process on SAS master 1004 iscompleted.

Since there is one SAS link on each of the four SAS slaves that isconnected to external expander 1007, and status of SAS links 1014-1017are changed concurrently, SAS master performs the SAS topology discoveryprocesses for the other three SAS links, 1015, 1016, and 1017. SASmaster 1004 removes the related route entries for SAS links 1015, 1016,and 1017 in SAS slaves 1001, 1002, and 1003. SAS master 1004 sets theself-configuring bit, for example, to 1 while performing the discoveryprocesses for the PHY status change events from the four SAS slaves toindicate that the single cohesive expander 1030 is in configuring statusand sets the self-configuring bit to, for example, 0, when all of thefour topology discovery processes are completed to indicate the singlecohesive expander 1030 is not in configuring status. SAS master 1004sends proprietary commands through SAS link or out-of-band link to theSAS slaves to send the BROADCAST (Change) primitives to all the SASslave external SAS ports. SAS master 1004 implements a timeout value towait for all of the four PHY status events to be reported and discoveryprocesses to be completed. When it times out and not all of the four PHYstatus events have been reported and the discoveries of the four slaveexpanders are not completed in time, an indication is made that not allof the four SAS links in the wide port connected to expander 1007 havebecome not ready concurrently. A link fail-over handling should beperformed for this case.

When the status of a SAS link which is not directly attached to SASswitch 1030 changes, e.g., changing from ready to not ready, or changingfrom not ready to ready, SAS switch 1030 is notified of the topologychange by a BROADCAST primitive, and performs SAS topology discovery onthe port from which the BROADCAST primitive was received. SAS switch1030 propagates a BROADCAST primitive to the external SAS ports whichdid not send a BROADCAST primitive to report their status.

As an example of a remote SAS connection handling, when a remote SASlink on an external SAS expander, e.g., SAS link 1018 on expander 1007connected to SAS target device 1008, becomes ready, SAS expander 1007reports the PHY change event to the connected SAS slave 1000 with aBROADCAST (Change) primitive. SAS slave 1000 propagates the BROADCAST(Change) primitive to SAS master 1004 through one of the SAS link in theSAS connection 1020. SAS master 1004 receives the BROADCAST (Change)primitive and performs topology discovery towards the SAS connection1020 where the BROADCAST (change) was received. During the topologydiscovery process, SAS master 1004 sends SMP commands, such as SMPREPORT GENERAL, SMP DISCOVERY command, to slave expander 1000 and findsthat the BROADCAST (Change) is from SAS link 1014 connected to externalexpander 1007. SAS master 1004 continues to discover the expander 1007and finds that SAS link 1018 has become ready. SAS master 1004 sends SMPCONFIGURE ROUTE INFORMATION commands to slave expanders 1000, 1001,1002, and 1003 to configure route entries for SAS target 1008. SASmaster 1004 sets the self-configuring bit to, e.g., 1 while performingthe discovery processes for received BROADCAST (Change) primitive toindicate that expander 1030 is in configuring status. SAS master 1004sets the self-configuring bit to, for example, 0 when the topologydiscovery process is completed, thereby to indicate that SAS switch 1030is not in a configuring status. Thus, SAS switch 1030 performs SAStopology discovery on the port from which the BROADCAST primitive wasreceived. SAS switch 1030 propagates a BROADCAST primitive to the SASports which did not send a BROADCAST primitive to report their status.

Below is an example of a remote SAS connection tear down. When a remoteSAS link on an external SAS expander, e.g., SAS link 1018 on expander1007 connected to a SAS target device 1008, becomes not ready, SASexpander 1007 reports the PHY change event to the connected SAS slave1000 with a BROADCAST (Change) primitive. SAS slave 1000 then propagatesthe BROADCAST (Change) primitive to SAS master 1004 through one of theSAS links in SAS connection 1020. SAS master 1004 receives the BROADCAST(Change) primitive and performs topology discovery on SAS connection1020 from which the BROADCAST (change) primitive was received. Duringthe topology discovery process, SAS master 1004 sends SMP commands, suchas SMP REPORT GENERAL, SMP DISCOVERY command, to SAS slave 1000 andfinds that the BROADCAST (Change) primitive is from SAS link 1014connected to external expander 1007. SAS master 1004 continues todiscover the expander 1007 and finds that the SAS link 1018 is notready. SAS master 1004 sends SMP CONFIGURE ROUTE INFORMATION commands toSAS slaves 1000, 1001, 1002, and 1003 to remove all their route entriesrelated to SAS link 1018, i.e., removes the route entries for SAS target1008. SAS master 1004 sets the self-configuring bit to, e.g. 1, whileperforming the discovery processes for received BROADCAST (Change)primitive to indicate that SAS switch 1030 is in a configuration mode.SAS master 1004 sets the self-configuring bit to, e.g. 0, when all ofthe topology discovery process is completed to indicate that SAS 1030 isnot in a configuration mode. SAS master sends proprietary commandsthrough SAS links or out-of-band links to SAS slaves to propagate theBROADCAST (Change) primitives to all external SAS ports on the SASslaves except for the one where BROADCAST (Change) primitive isreceived.

When an external SAS devices performs a discovery process, SAS switch1030 responds to SAS commands issued by the external SAS device as anSSP or SMP target of the discovery. During the SAS topology discoveryprocess, external SAS devices send SMP commands to SAS switch 1030, andfurther send SSP commands to the virtual SSP target implemented in theSAS expander. The SMP and SSP traffic to the SAS switch 1030 is routedto the SAS master by the SAS slaves. A software virtualization layer isimplemented in the SAS master for external SMP and SSP handling. Whenthe SAS master performs such virtualization layer, the SAS master savesthe SAS slave information, such as PHY status information, in SAS slavesand external SAS devices. The virtualization layer uses the informationsaved to respond to external SMP commands. For example, when an externalSAS device sends an SMP DISCOVERY command to discover a PHY on SASswitch 1030, the virtualization layer maps the globally indexed SAS PHYin the SMP DISCOVERY command to a local PHY on a SAS slave and respondswith the information saved for that PHY. When an external SAS devicesends an SES (SCSI Enclosure Services) command to a virtual targetimplemented in SAS switch 1030, the command is routed to the SAS masterby the SAS slaves. The SES commands are handled in the SAS master forenclosure management.

In a specific embodiment, a SAS switch described above can include fourmodel SXP68x12G expander devices, as SAS slaves, and one model SXP36x12Gexpander device as a SAS master SAS, both of which device models arecommercially available from PMC-Sierra (https://pmcs.com/) The SASswitch can have 60 SAS ports for external SAS device connection. EachSAS port has four SAS links each connected to a different SAS slave. TheSAS master SXP36x12G is connected to each of the SAS slaves SXP68x12Gusing an eight-link wide port. The SAS slaves are configured asnon-self-configuring (nscfg) expanders, and the SAS master is configuredas a self-configuring (scfg) expander. The SAS master hardware andfirmware manage the IDENTIFY address frames associated with SAS slaves.A virtualization layer is implemented in the management SAS expanderfirmware for the single cohesive SAS expander management to provide asingle SAS address for the SAS switch and wide ports havingnon-overlapping PHYs, as described above with reference to FIG. 2.

When the status of the links within an external SAS wide port of SASswitch 1030 are detected as being inconsistent, the SAS traffic betweenthe external SAS initiator and SAS target connected by SAS switch 1030may be blocked if route entries are not configured for the failed SASlink. For example, assume SAS link 1014 status is not ready while SASlink 1015, 1016 and 1017 statuses are ready. When SAS initiator 1005tries to establish a SAS connection with target 1008, it chooses to sendthe open connection requests over one of the SAS links of 1010, 1011,1012, 1013 without being aware that the SAS link 1014 is not ready. Ifthe open connection requests are sent over SAS links 1011, 1012, or1013, it can be propagated to external expander 1007 by SAS slaves 1001,1002, or 1003 through SAS links 1015, 1016, or 1017, respectively.However, if SAS initiator 1005 chooses to send the open connectionrequests over SAS link 1010, because SAS link 1014 is not ready, therequest to propagate the requests over SAS link 1014 will not beachieved. The open requests are rejected if there's no alternative routeto the SAS target 1008. The link fail-over handling is required to solvethis problem.

Inconsistencies within a SAS wide port link status are identified by theSAS master. As described above, if the status of all SAS links within awide port are not detected as being consistent within a predefined time(time-out), the SAS performs a link fail-over handling. The purpose oflink fail-over handling is to route the traffic destined for the SASslave attached to the failed SAS link to another SAS slave. Suchrerouting and the required changes in the slaves' routing tables areperformed by the SAS master.

For example, assume that SAS link 1014 status indicates that it is notready while SAS links 1015, 1016, and 1017 are ready. Accordingly, SASmaster 1004 configures the route entries on SAS slave 1000 to route allthe SAS traffic destined for external SAS expander 1007 and external SAStarget device 1008. Such traffic is routed through one of SAS links1021, 1022, or 1023. The route entries on the other SAS slaves are notchanged.

If multiple external SAS targets are affected by a failed link, SASmaster 1004 may distribute the route entries to different SAS slaves toachieve load balancing. The link fail-over route entries in SAS slave1000 and SAS master 1004 are configured accordingly. Any open connectionrequest by initiator SAS device 1005 is routed to SAS master 1004 andthen routed to, for example, SAS slave 1001, which is assumed to have aready SAS link connected to expander 1007 and a valid route entry fortarget SAS device 1008. The open connection requests are routed toexpander 1007 and then arrive at the target 1008 successfully.

FIG. 3 is a simplified block diagram of an SAS expander 330, inaccordance with another embodiment of the present invention SAS expander(also referred to herein as SAS switch) 330, is shown as including a SASmaster 325 and a multitude of SAS slaves 321, 322, 323, and 324. SASslaves 321-324 are non-self-configurable (nscfg), and thus do notconfigure themselves. SAS master 325 is self-configuring (scfg) andperforms configuration functions for itself and SAS slaves 321-324. SASswitch 330 has two wide ports, 331 and 332. The first wide port 331 isshown as including four links coupled to initiation device HBA 301; thesecond wide port 332 is also shown as including four links coupled totarget SAS device JBOD 308. In FIG. 3, reference numeral x1 indicatesone SAS link, and reference numeral xN indicates N SAS links, where N isan integer.

During normal operation, traffic between initiator device HBA 301 andtarget device JBOD 308 is assumed to be established via SAS link 310 ofwide port 331, slave expander 321, and SAS link 314 of wide port 332.Assume, for example, that SAS slave 321 has a failed SAS link 314detected during a PHY status change event by SAS master 325, forexample, via a BROADCAST (Change) primitive. SAS master 325 thenperforms a discovery to the SAS slave with the failure SAS link anddetecting the failure external SAS link 314. In response, SAS master 325performs further discoveries with other SAS slaves to find a replacementSAS slave (e.g., expander 322, expander nscfg B) that can route thetraffic affected by the fail of link 314. Assume that SAS master 325substitutes SAS slave 322 for slave 321 to reroute the affected traffic.Having identified SAS expander 322 as a replacement SAS master 325configures the local route entries in the SAS slaves so as to route theaffected SAS traffic to SAS slave 322. In an embodiment, SAS master 325configures route entries in SAS slave 321 so that traffic destined forthe failed link 314 is routed to SAS master 325. Route entries in masterexpander 325 are also configured to route the traffic received fromslave 321 to slave 322. Moreover, route entries in slave expander 322are configured to route the traffic to target device 308. With thisarrangement, failed SAS link 314 (shown in broken lines in FIG. 3) isreplaced by the path shown as including SAS link 320 leading to SASmaster 325 leading to SAS link 322 t and SAS link 315. In someembodiments, load balancing is achieved by configuring the route entriesin SAS master 325 to group the JBOD devices and route each group todifferent SAS slaves that have an operational link to the JBOD.

FIG. 4 is a simplified block of a system 400 including a SAS expander430, according to another embodiment of the present invention. SASexpander 430 is shown as includes a SAS master 425 and a multitude ofSAS slaves 421, 422, 423, and 424. As noted in FIG. 4, SAS slaves421-424 are non-self-configuring and do not configure route entries forthemselves. SAS master 425 performs configuration functions on itselfand the slave expanders. In FIG. 4, reference numeral x1 indicates oneSAS link, and reference numeral xN indicates N SAS links, where N is aninteger.

SAS switch 430 is shown as having four wide ports, 431, 432, 433, and434. The first wide port 431 is shown as including four SAS linkscoupled to a first initiator device HBA 401. The second wide port 432 isshown as including four SAS links coupled to a second initiator deviceHBA 402. The third wide port 433 is shown as including four SAS linkscoupled to a first JBOD 408 (target SAS devices installed in the JBODare not shown). The fourth wide port 434 is shown as including four SASlinks coupled to a second JBOD 409 (target SAS devices installed in theJBOD are not shown).

The master and slave expanders have different SAS addresses. The PHYsfrom the four SAS slaves 421-424 are combined together into x4 wideports 431-434 for connecting to the external SAS devices. In thisexample, each PHY is from a different SAS slave. SAS master 425 isconnected to each slave expander using a xN wide port in a fan-outtopology, where N is an integer determined according to the remainingPHYs on each SAS slave not used in the external wide ports. In oneexample, SAS switch 400 may be implemented using PMC Sierra's SXP 68x12Gdevices as SAS slave expanders and PMC Sierra's SXP 36x12G as SAS masterexpander. The SAS switch has 60 external x4 ports, and the internal wideport can have a width N=8 (68−60=8). Note that only four x4 wide portsare shown in FIG. 4, two for HBA and two for JBOD. More wide ports arenot shown in the figure for clarity. In embodiments of the invention,the HBA to JBOD connection ratio is flexible.

The SAS slaves send their IDENTIFY address frames using the SAS masterSAS address and a globally indexed logical expander PHY ID. Therefore,the external devices, such as the HBA or JBOD, receive IDENTIFY addressframes from the SAS slaves with an identical SAS address and treats thex4 port (including PHYs from 4 different slave expanders) as a wideport. In an embodiment, multiple SAS slaves provide high port count SASconnectivity and are not visible to external SAS devices. Each SASslave's physical PHYs are mapped to a range of globally indexed logicalexpander PHY IDs within the SAS switch. All logical expander PHYs fromfour SAS slaves form the complete logical PHY map of the logicalexpander. The scfg SAS master is visible to external SAS devices,(HBA/JBOD), and manages the internal connected nscfg SAS slaves. Thescfg SAS master firmware virtualizes the high port count logicalexpander to the external devices by responding to SMP/SMP commands.External management traffic (SMP/SSP between HBA and SAS switch) isrouted by the nscfg SAS slaves to the scfg SAS master. Normal SAS datatraffic (SSP/STP/SMP between HBA and JBOD) is routed by the SAS slave,only in one hop within the SAS switch, and the scfg SAS master is notinvolved. Link fail-over traffic is routed through nscfg SAS slaves andthe scfg SAS master. Moreover, virtual SSP/SES is handled in the scfgSAS master.

In an embodiment, each nscfg expander transmits IDENTIFY address frameswith its own SAS address on the links connected to the scfg expander,and the scfg expander manages the nscfg expanders through the internallyconnected SAS wide ports. The nscfg expander external PHY change eventsare notified to the scfg expander via BC primitives, which trigger scfgexpander to perform a discovery process. During the scfg expanderdiscovery process, the scfg expander saves the nscfg expander PHYinformation in local data base, and the scfg expander discovers theexternal topology (if required) and configures route entries for thenscfg expanders. The scfg expander configures the nscfg route entriesfor the scfg expander virtual SSP target. The scfg expander configureslocal route entries for the external discovery SMP requests whennecessary, and removes the route entry when it is completed to avoidmulti-path routing. The scfg expander polls real time information, suchas PHY error count, etc., in nscfg expanders at certain intervals andsaves it in local data base. The scfg expander firmware virtualizes thesingle cohesive expander by responding to external SMP commands usingthe local data base information and forwarding SMP commands (such as PHYreset) to mapped nscfg expanders. The logical PHY mapping is used to mapthe SMP command to appropriate physical nscfg expanders and PHYs. Thescfg expander configures zoning for nscfg expanders, and the zoneconfiguration is identical in each of the nscfg expander. Embodiments ofthe invention also include private or customized SMP/SSP commands formore efficient scfg/nscfg (or master/slave) expander communication.

FIG. 5 is a simplified block diagram illustrating a system 550 includinga single cohesive SAS expander according to an alternative embodiment ofthe present invention. As shown in FIG. 5, a single cohesive SASexpander, or SAS switch, 530, includes a SAS master 525 and a multitudeof SAS slaves 521, 522, 523, and 524. Single cohesive SAS expander, orSAS switch 530, has a similar configuration as SAS switch 1030illustrated in FIG. 2. As noted in FIG. 5, SAS slaves arenon-self-configuring (nscfg). They do not perform configurationfunctions for themselves. SAS master 525 is self-configuring and islabeled scfg. SAS master 525 performs configuration functions for itselfand the SAS slaves. SAS switch 530 has four wide ports, 531, 532, 533,and 534. In FIG. 5, reference numeral x2 means two SAS links, andreference numeral xN means N SAS links, where N is an integer. The firstwide port 531 includes four SAS links coupled to a first initiationdevice, HBA 501, and the second wide port 532 includes four SAS linkscoupled to a second initiation device, HBA 502. The third wide port 533includes four SAS links coupled to a first target SAS device JBOD 508,and the fourth wide port 534 includes four SAS links coupled to a secondtarget SAS device JBOD 509.

In an embodiment, SAS switch 530 in FIG. 5 includes four ports withlower port counts, with two PMC Sierra's SXP68x12G expanders as nscfgSAS slaves, and one PMC Sierra's SXP24x12G expander as the scfg SASmaster. Two PHYs from each of the two nscfg expanders are combinedtogether into a four link wide port. Note ports 531 and 532 can beconsidered a first x4 wide port, and port 533 and port 534 can beconsidered a second x4 wide port. Using the above expander devices, atotal of 30 external x4 ports can be provided, and the nscfg SAS slaveto scfg SAS master port width is eight.

FIG. 6 is a simplified block diagram illustrating a system 600 includinga single cohesive SAS expander according to yet another embodiment ofthe present invention. As shown in FIG. 6, a single cohesive SASexpander, or SAS switch, 630, includes a SAS master 629 and a multitudeof SAS slaves 621, 622, . . . , 627, and 628. Single cohesive SASexpander, or SAS switch, 630 has a similar configuration as SAS switch1030 illustrated in FIG. 2. As noted in FIG. 6, SAS slaves arenon-self-configuring (nscfg). They do not perform configurationfunctions for themselves. SAS master 629 is self-configuring and islabeled scfg. SAS master 625 performs configuration functions for itselfand the SAS slaves. SAS switch 630 has four wide ports, 631, 632, 633,and 634. The first wide port 631 includes eight SAS links coupled to afirst initiation device, HBA 601, and the second wide port 632 includeseight SAS links coupled to a second initiation device, HBA 602. Thethird wide port 433 includes eight SAS links coupled to a first targetSAS device JBOD 608, and the fourth wide port 434 includes eight SASlinks coupled to a second target SAS device JBOD 609. In FIG. 6,reference numeral x1 indicates one SAS link, and reference numeral xNindicates N SAS links, where N is an integer.

In an embodiment, SAS switch 630 in FIG. 6 can be implemented usingeight PMC Sierra's SXP36x12G expanders as nscfg SAS slaves and one PMCSierra's SXP48x12G expander as the scfg SAS master. One PHY from each ofthe eight nscfg expanders are combined together into an eight link wideport. Using the above expander devices, a total of 30 external x8 portscan be provided, and the nscfg SAS slave to scfg SAS master port widthis six, i.e., N=6.

FIG. 7 is a flow chart 700 for forming a single cohesive SAS expanderfrom multiple expanders according to an embodiment of the presentinvention. As shown at 702, a master SAS expander and a multitude ofslave SAS expanders are identified. Each expander has a distinct SASaddress. The same type of expanders can be used as the SAS master or theSAS slaves. Alternatively, a different type of expander can be used asthe SAS master, e.g., depending on the available links of each expanderand the internal topology of the SAS switch. At 704, each of the slaveSAS expanders is connected to the master SAS expander through at leastone internal SAS link and no direct connection is formed between any twoof the slave SAS expanders. An example of the connection is shown in SASswitch in FIG. 2, where the internal links are shown as 1020-1023. Themethod also includes, at 706, forming at least one wide port forconnecting to an external device by connecting at least one PHY on afirst one of the slave SAS expanders with at least one PHY on adifferent one of the slave SAS expanders. For example, in FIG. 2, wideport 1031 includes links 1010-1013 from SAS slaves 1000-1003. Further,at 708, the plurality of slave expanders is configured to route SAStraffic in accordance with routing tables established by the master SASexpander. In some embodiments, the method also includes configuring theslave SAS expanders such that the IDENTIFY address frames sent toexternal SAS devices by the SAS slaves include a SAS ADDRESS field setto the master SAS expander's SAS address and a PHY IDENTIFIER field setto a PHY identifier that is uniquely indexed within the single coherentSAS expander. Thus, method 700 enables grouping a number of SAS expandertogether to provide a solution for a high port count SAS expander, whileremaining a simple integrated external management interface and similarswitching performance as a single cohesive SAS expander.

FIG. 8 is a flowchart 800 for creating a fail-over SAS path in a singlecohesive SAS expander including a SAS master and a multitude of SASslaves according to an embodiment of the present invention. Method 800in FIG. 8 is described below with reference to storage system 300 inFIG. 3. The method includes, at 802, a SAS slave 321 with a failure SASlink (link 314) reporting PHY status change event to SAS master 325(expander scfg), for example, via BROADCAST (Change) primitive. At 804,SAS master 325 then performs a discovery with the SAS slave 321 with thefailure SAS link and detecting the failure external SAS link 314. At806, the SAS master performs further discoveries with other SAS slavesto find a replacement SAS slave, e.g., SAS slave 322 (expander nscfg B)that can route the SAS traffic affected by the failure external SASlink. At 808, having identified a replacement SAS expander, the SASmaster configures local route entries to route the affected SAS trafficto the replacement SAS slave.

Various embodiments of the present invention can be implemented in theform of logic in software or hardware or a combination of both. Thelogic may be stored in a non-transitory computer readable ormachine-readable storage medium as a set of instructions adapted todirect a processor of a computer system to perform a set of stepsdisclosed in embodiments of the present invention. The logic may formpart of a computer program product adapted to direct aninformation-processing device to perform a set of steps disclosed inembodiments of the present invention. Based on the disclosure andteachings provided herein, a person of ordinary skill in the art willappreciate other ways and/or methods to implement the present invention.

It is also understood that the examples and embodiments described hereinare for illustrative purposes only and that various modifications orchanges in light thereof will be suggested to persons skilled in the artand are to be included within the spirit and purview of this applicationand scope of the appended claims.

What is claimed is:
 1. A SAS (Serial Attached SCSI or Serial AttachedSmall Computer System Interface) switch, comprising: a master SASexpander; a plurality of slave expanders connected to the master SASexpander, each of the plurality of slave expanders having a distinct SASaddress and not being directly connected to other slave expanders, eachslave SAS expander being configured by the master SAS expander; a firstSAS wide port having a first plurality of SAS links each associated witha different one of the plurality of slave expanders; and a second SASwide port having a second plurality of SAS links each associated with adifferent one of the plurality of slave expanders, wherein the pluralityof slave expanders are configured to route SAS traffic in accordancewith routing tables established by the master SAS expander, the masterSAS expander not being directly connected to either the first or thesecond SAS wide ports, wherein, in a SAS link identification sequence,the plurality of slave SAS expanders are configured to send IDENTIFYaddress frames which include the master SAS expander's SAS address and aplurality of PHY identifiers globally indexed within the SAS switch. 2.The SAS switch of claim 1 wherein the master SAS expander and theplurality of slave SAS expanders are configured to operate and respondas a single coherent SAS expander with a unified SAS address, whereinthe first and the second wide ports are configured to connect toexternal SAS devices.
 3. The SAS switch of claim 1 wherein said masterexpander is configured to: detect a failure with a first one of theplurality of SAS links; and reroute a SAS traffic bound for the detectedfirst one of the plurality of SAS links.
 4. The SAS switch of claim 1wherein each of the first plurality of SAS links in the first SAS wideport and each of the second plurality of SAS links in the second SASwide port is configured to have a distinct non-overlapping external PHYidentifier.
 5. The SAS switch of claim 1 wherein each of the pluralityof slave SAS expanders communicates with the master SAS expander usingthe slave expander's SAS address and a local PHY identifier.
 6. The SASswitch of claim 1 further comprising a third and a fourth wide ports,each link in each of the wide port is associated with a different one ofthe plurality of slave expanders, wherein the third SAS wide port isconfigured to connect the SAS switch to a third external SAS device, andthe fourth SAS wide port is configured to connect the SAS switch to afourth external SAS device.
 7. The SAS switch of claim 1 wherein each ofthe slave SAS expanders is configured to: route SAS traffic amongexternal SAS devices; and route SAS management traffic to and from themaster SAS expander.
 8. A method for forming a single coherent SAS(Serial Attached SCSI or Serial Attached Small Computer SystemInterface) expander, the method comprising: assigning a SAS expander asa master SAS expander; assigning a plurality of SAS expanders as SASslave expanders, the SAS master expander and each of the plurality ofslave SAS expanders having distinct SAS addresses; connecting each ofthe slave SAS expanders to the master SAS expander through at least oneinternal SAS link; inhibiting direct connection between the plurality ofslave SAS expanders; forming a first SAS wide port having a firstplurality of SAS links each associated with a different one of theplurality of slave expanders; forming a second SAS wide port having asecond plurality of SAS links each associated with a different one ofthe plurality of slave expanders; configuring the plurality of slaveexpanders to route SAS traffic in accordance with routing tablesestablished by the master SAS expander; and configuring the slave SASexpanders such that the IDENTIFY address frames sent to external SASdevices by the slave expanders include a SAS ADDRESS field set to themaster SAS expander's SAS address and a PHY IDENTIFIER field set to aPHY identifier that is uniquely indexed within the single coherent SASexpander.
 9. The method of claim 8 further comprising: inhibiting directconnection between the master expander and the wide port.
 10. The methodof claim 8 further comprising: configuring the slave SAS expanders suchthat SAS traffic between two external SAS devices is routed via externalSAS wide ports.
 11. The method of claim 8 wherein the master SASexpander is configured to: detect a failure with a first one of aplurality of SAS links; and reroute a SAS traffic bound for the firstone of the plurality of SAS links.